/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.deployment.interfaces;

import br.com.deployment.entidade.acesso.Usuario;
import br.com.deployment.entidade.fermojupi.AtoItem;
import br.com.deployment.entidade.selo.DetalheEntradaSelo;
import br.com.deployment.entidade.selo.Distribuicao;
import br.com.deployment.entidade.selo.Selo;
import br.com.deployment.entidade.selo.TipoSelo;
import java.util.Date;
import java.util.List;
import javax.ejb.Remote;

/**
 *
 * @author elyjr
 */
@Remote
public interface SeloDaoIn {
    
     public void save(Selo entity);

    public void delete(Selo entity);

    public Selo update(Selo entity);

    public Selo find(int entityID);


    public void editSelos(List<Selo> selos);

    public void cancelar(List<Selo> s);

    public Selo findNumeracao(int numeracao, int serie);

    public List<Selo> findAll();

    public boolean exist(Selo se, boolean msg);

    public Selo findSelo(int numeracao, String serie, TipoSelo tipoSelo);

    public Long qtdSelo(Usuario u, TipoSelo tSelo);

    /**
     * Busca a quantidade de selos do tipo, passado por parâmetro, que estejam
     * ativo distribuido e status true
     *
     * @param tSelo
     * @return e
     */
    public Long qtdSeloAll(TipoSelo tSelo);

    public Long qtdSeloDistribuido(TipoSelo tSelo);

    public Long qtdSeloSairam(TipoSelo tSelo);

    public Long qtdSeloSairamMes( Date dataIni, Date dataFim);

    public Long qtdSeloCancelado(TipoSelo tSelo);

    public boolean existSeloEditar(int numeracao, String serie, TipoSelo tipoSelo, int detalhe);

    public void removeSelos(DetalheEntradaSelo es);

    public List<Selo> selosByUsuarioByAto(AtoItem atoItem, Usuario usr, List<Selo> notSelos);

    public Selo findSeloUsr(int numeracao, String serie, TipoSelo tipoSelo, Usuario usr);

    public void seloNaoUsado(Selo s, TipoSelo ts, Date dataIni,
            Date dataFim, Distribuicao d, Integer numIni, Integer numFim);
}
